home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
071-080
/
amok78
/
sgconfiguration
/
sgconfig.dok
< prev
next >
Wrap
Text File
|
1993-11-04
|
5KB
|
156 lines
SGConfiguration V 1.1
----------------------
Copyright © 1992 by hartmut Goebel
SGConfiguration ist ein Modul aus der Style Guide Support Library
des Zerberus Oberon Club (ZOC).
SGConfiguration dient dazu, Konfigurationsdateien Style-Guide-
konform zu lesen und zu schrieben.
.....8<..------------
DEFINITION SGConfiguration;
IMPORT
d := Dos;
TYPE
ReadProc = PROCEDURE(file: d.FileHandlePtr): BOOLEAN;
WriteProc = PROCEDURE(name: ARRAY OF CHAR): BOOLEAN;
VAR
Extension : ARRAY 10 OF CHAR;
BaseName: ARRAY 40 OF CHAR;
PROCEDURE ReadConfig(VAR setting: ARRAY OF CHAR;
VAR dirLock: d.FileLockPtr;
currentFirst: BOOLEAN;
envToTry: ARRAY OF CHAR;
readProc: ReadProc): BOOLEAN;
PROCEDURE ReadConfigEH(VAR setting: ARRAY OF CHAR;
VAR dirLock: d.FileLockPtr;
currentFirst: BOOLEAN;
envToTry: ARRAY OF CHAR;
readProc: ReadProc): BOOLEAN;
PROCEDURE UseConfig(save: BOOLEAN;
writeProc: WriteProc): BOOLEAN;
PROCEDURE WriteConfig(setting: ARRAY OF CHAR;
dirLock: d.FileLockPtr;
writeProc: WriteProc): BOOLEAN;
END SGConfiguration.
.....8<..------------
Globale Variable
BaseName: BaseName der Applikation (siehe Kap. 2)
muß gesetzt werden!
Extension: Filenamen-Endung für die Konfigurations Files (ohne
führenden Punkt), Default: "config"
PROCEDURE ReadConfig * (VAR setting : ARRAY OF CHAR;
VAR dirLock : d.FileLockPtr;
currentFirst: BOOLEAN;
envToTry: ARRAY OF CHAR;
readProc: ReadProc): BOOLEAN;
Findet heraus, welche Konfiguration geladen werden soll und ruft
<readProc> auf, um die Datei zu lesen.
Wird ein leerer string als <setting> übergegeben, wird gemäß Sytle
Guide gesucht.
Die anderne Paramter sind:
setting: wenn vom Benutzer angegeben, sonst""
currentFirst: suche zu allererst im aktuellen Verzeichniss (wenn
<setting> nicht angegeben ist)
envToTry: versuche die in dieser Shell-Variablen angegebene Datei
zu laden, bevor versuch wird, die Konfig im
PROGDIR: zu laden
readProc: diese Prozedur liest die Datei
Die Prozedur darf das File NICHT schließen.
Rückgabe:
es wird das Ergebniss von <readProc> zurückgegeben, oder FALSE,
falls keine Konfiguration gefunden wurde
setting: die Konfigurationsdatei, die wirklich gelesen wurde
dirLock: Lock auf das Directory, aus dem die Konfig gelesen
wurde
Achtung: dieser Lock muß fom Programm freigegeben
werden, sobald er nicht mehr benötigt wird.
Gesucht wird - falls <setting> nicht angegeben wird - nach folgenden
Dateien:
<BaseName>.<Extension> im current dir bzw. in PROGDIR:
ENV:<BaseName>/<BaseName>.<Extension>
PROCEDURE ReadConfigEH * (VAR setting : ARRAY OF CHAR;
VAR dirLock : d.FileLockPtr;
currentFirst: BOOLEAN;
envToTry: ARRAY OF CHAR;
readProc: ReadProc): BOOLEAN;
Arbeitet änlich wie ReadConfig, einziger Unterschied ist die
Suchreihenfolge:
<envToTry> - ENV: - <current dir> - PROGDIR:
(EH steht für Env-Home :-)
PROCEDURE UseConfig * (save: BOOLEAN;
writeProc: WriteProc): BOOLEAN;
Speichert die Konfig nach ENV:<BaseName>/<BaseName>.<Extension>.
Existiert das Unterverzeichnis ENV:<BaseName> noch nicht, wird es
eingerichtet.
Parameter:
save : TRUE: speichere ebenfalls nach ENVARC:
Unterverzeichnis wird ggf. eingerichtet
writeProc: diese Prozedur schreibt die Konfiguration
Rückgabe:
es wird das Ergebniss von <writeProc> zurückgegeben, oder FALSE,
falls sich ein Unterverzeichnis nicht einrichten lies.
PROCEDURE WriteConfig * (setting: ARRAY OF CHAR;
dirLock : d.FileLockPtr;
writeProc: WriteProc): BOOLEAN;
Findet heraus, wohin die Konfiguration gespeichert werden werden
soll und ruft <writeProc> auf, die die Konfig-Datei schreibt.
Wird <setting> nicht mit angegeben, wird versucht, dir Konfig in
PROGDIR: zu schreiben, anschließend nach ENV: und ENVARC:
Die anderne Paramter sind:
setting : die geladene bzw. die zu schriebende Konfig (sonst "")
dirLock : Lock aud das Dir, von dem die Konfig gelesen wurde
(Rückgabe von ReadKonfig).
writeProc: diese Prozedur schreibt die Konfiguration
Rückgabe:
es wird das Ergebniss von <writeProc> zurückgegeben, oder FALSE,
falls sich ein Unterverzeichnis nicht einrichten ließ.
Viel Spaß
+++hartmut